local airCamera = {}

local bf30a2_reg_table = {
	{0xf2,0x01},
	{0xcf,0xb0},
	{0x12,0x20},
	{0x15,0x80},
	{0x6b,0x71},
	{0x00,0x40},
	{0x04,0x00},
	{0x06,0x26},
	{0x08,0x07},
	{0x1c,0x12},
	{0x20,0x20},
	{0x21,0x20},
	{0x34,0x02},
	{0x35,0x02},
	{0x36,0x21},
	{0x37,0x13},
	{0xca,0x23},
	{0xcb,0x22},
	{0xcc,0x89},
	{0xcd,0x4c},
	{0xce,0x6b},
	{0xa0,0x8e},
	{0x01,0x1b},
	{0x02,0x1d},
	{0x13,0x08},
	{0x87,0x13},
	{0x8b,0x08},
	{0x70,0x17},
	{0x71,0x43},
	{0x72,0x0a},
	{0x73,0x62},
	{0x74,0xa2},
	{0x75,0xbf},
	{0x76,0x00},
	{0x77,0xcc},
	{0x40,0x32},
	{0x41,0x28},
	{0x42,0x26},
	{0x43,0x1d},
	{0x44,0x1a},
	{0x45,0x14},
	{0x46,0x11},
	{0x47,0x0f},
	{0x48,0x0e},
	{0x49,0x0d},
	{0x4B,0x0c},
	{0x4C,0x0b},
	{0x4E,0x0a},
	{0x4F,0x09},
	{0x50,0x09},
	{0x24,0x30},
	{0x25,0x36},
	{0x80,0x00},
	{0x81,0x20},
	{0x82,0x40},
	{0x83,0x30},
	{0x84,0x50},
	{0x85,0x30},
	{0x86,0xd8},
	{0x89,0x45},
	{0x8a,0x33},
	{0x8f,0x81},
	{0x91,0xff},
	{0x92,0x08},
	{0x94,0x82},
	{0x95,0xfd},
	{0x9a,0x20},
	{0x9e,0xbc},
	{0xf0,0x87},
	{0x51,0x06},
	{0x52,0x25},
	{0x53,0x2b},
	{0x54,0x0f},
	{0x57,0x2a},
	{0x58,0x22},
	{0x59,0x2c},
	{0x23,0x33},
	{0xa1,0x93},
	{0xa2,0x0f},
	{0xa3,0x2a},
	{0xa4,0x08},
	{0xa5,0x26},
	{0xa7,0x80},
	{0xa8,0x80},
	{0xa9,0x1e},
	{0xaa,0x19},
	{0xab,0x18},
	{0xae,0x50},
	{0xaf,0x04},
	{0xc8,0x10},
	{0xc9,0x15},
	{0xd3,0x0c},
	{0xd4,0x16},
	{0xee,0x06},
	{0xef,0x04},
	{0x55,0x34},
	{0x56,0x9c},
	{0xb1,0x98},
	{0xb2,0x98},
	{0xb3,0xc4},
	{0xb4,0x0c},
	{0xa0,0x8f},
	{0x13,0x07},
}
local gc032a_reg_table = {
    {0xf3, 0x83}, 
    {0xf5, 0x08},
    {0xf7, 0x01},
    {0xf8, 0x01}, 
    {0xf9, 0x4e},
    {0xfa, 0x00},
    {0xfc, 0x02},
    {0xfe, 0x02},
    {0x81, 0x03},
 
    {0xfe, 0x00},
    {0x77, 0x64},
    {0x78, 0x40},
    {0x79, 0x60},
 
    {0xfe, 0x00},
    {0x03, 0x01},
    {0x04, 0xcb},
    {0x05, 0x01},
    {0x06, 0xb2},
    {0x07, 0x00},
    {0x08, 0x10},
 
    {0x0a, 0x00},
    {0x0c, 0x00},
    {0x0d, 0x01},
    {0x0e, 0xe8},
    {0x0f, 0x02},
    {0x10, 0x88},
 
    {0x17, 0x54},
    {0x19, 0x08},
    {0x1a, 0x0a},
    {0x1f, 0x40},
    {0x20, 0x30},
    {0x2e, 0x80},
    {0x2f, 0x2b},
    {0x30, 0x1a},
    {0xfe, 0x02},
    {0x03, 0x02},
    {0x05, 0xd7},
    {0x06, 0x60},
    {0x08, 0x80},
    {0x12, 0x89},
 
 
    {0xfe, 0x03},
    {0x52, 0xba}, 
    {0x53, 0x24},
    {0x54, 0x20},
    {0x55, 0x00},
    {0x59, 0x1f}, 
    {0x5a, 0x00}, 
    {0x5b, 0x80},
    {0x5c, 0x02},
    {0x5d, 0xe0},
    {0x5e, 0x01},
    {0x51, 0x03},
    {0x64, 0x04},
    {0xfe, 0x00},
 
 
    {0xfe, 0x00},
    {0x18, 0x02},
    {0xfe, 0x02},
    {0x40, 0x22},
    {0x45, 0x00},
    {0x46, 0x00},
    {0x49, 0x20},
    {0x4b, 0x3c},
    {0x50, 0x20},
    {0x42, 0x10},
 
 
    {0xfe, 0x01},
    {0x0a, 0xc5},
    {0x45, 0x00},
    {0xfe, 0x00},
    {0x40, 0xff},
    {0x41, 0x25},
    {0x42, 0xef},
    {0x43, 0x10},
    {0x44, 0x83}, 
    {0x46, 0x22},
    {0x49, 0x03},
    {0x52, 0x02},
    {0x54, 0x00},
    {0xfe, 0x02},
    {0x22, 0xf6},
 
 
    {0xfe, 0x01},
    {0xc1, 0x38},
    {0xc2, 0x4c},
    {0xc3, 0x00},
    {0xc4, 0x2c},
    {0xc5, 0x24},
    {0xc6, 0x18},
    {0xc7, 0x28},
    {0xc8, 0x11},
    {0xc9, 0x15},
    {0xca, 0x20},
    {0xdc, 0x7a},
    {0xdd, 0xa0},
    {0xde, 0x80},
    {0xdf, 0x88},
 
 
    {0xfe, 0x01},
    {0x50, 0xc1},
    {0x56, 0x34},
    {0x58, 0x04},
    {0x65, 0x06},
    {0x66, 0x0f},
    {0x67, 0x04},
    {0x69, 0x20},
    {0x6a, 0x40},
    {0x6b, 0x81},
    {0x6d, 0x12},
    {0x6e, 0xc0},
    {0x7b, 0x2a},
    {0x7c, 0x0c},
    {0xfe, 0x01},
    {0x90, 0xe3},
    {0x91, 0xc2},
    {0x92, 0xff},
    {0x93, 0xe3},
    {0x95, 0x1c},
    {0x96, 0xff},
    {0x97, 0x44},
    {0x98, 0x1c},
    {0x9a, 0x44},
    {0x9b, 0x1c},
    {0x9c, 0x64},
    {0x9d, 0x44},
    {0x9f, 0x71},
    {0xa0, 0x64},
    {0xa1, 0x00},
    {0xa2, 0x00},
    {0x86, 0x00},
    {0x87, 0x00},
    {0x88, 0x00},
    {0x89, 0x00},
    {0xa4, 0xc2},
    {0xa5, 0x9b},
    {0xa6, 0xc8},
    {0xa7, 0x92},
    {0xa9, 0xc9},
    {0xaa, 0x96},
    {0xab, 0xa9},
    {0xac, 0x99},
    {0xae, 0xce},
    {0xaf, 0xa9},
    {0xb0, 0xcf},
    {0xb1, 0x9d},
    {0xb3, 0xcf},
    {0xb4, 0xac},
    {0xb5, 0x00},
    {0xb6, 0x00},
    {0x8b, 0x00},
    {0x8c, 0x00},
    {0x8d, 0x00},
    {0x8e, 0x00},
    {0x94, 0x55},
    {0x99, 0xa6},
    {0x9e, 0xaa},
    {0xa3, 0x0a},
    {0x8a, 0x00},
    {0xa8, 0x55},
    {0xad, 0x55},
    {0xb2, 0x55},
    {0xb7, 0x05},
    {0x8f, 0x00},
    {0xb8, 0xc7},
    {0xb9, 0xa0},
 
    {0xfe, 0x01},
    {0xd0, 0x40},
    {0xd1, 0x00},
    {0xd2, 0x00},
    {0xd3, 0xfa},
    {0xd4, 0x4a},
    {0xd5, 0x02},
 
    {0xd6, 0x44},
    {0xd7, 0xfa},
    {0xd8, 0x04},
    {0xd9, 0x08},
    {0xda, 0x5c},
    {0xdb, 0x02},
    {0xfe, 0x00},
 
 
    {0xfe, 0x00},
    {0xba, 0x00},
    {0xbb, 0x04},
    {0xbc, 0x0a},
    {0xbd, 0x0e},
    {0xbe, 0x22},
    {0xbf, 0x30},
    {0xc0, 0x3d},
    {0xc1, 0x4a},
    {0xc2, 0x5d},
    {0xc3, 0x6b},
    {0xc4, 0x7a},
    {0xc5, 0x85},
    {0xc6, 0x90},
    {0xc7, 0xa5},
    {0xc8, 0xb5},
    {0xc9, 0xc2},
    {0xca, 0xcc},
    {0xcb, 0xd5},
    {0xcc, 0xde},
    {0xcd, 0xea},
    {0xce, 0xf5},
    {0xcf, 0xff},
 
 
    {0xfe, 0x00},
    {0x5a, 0x08},
    {0x5b, 0x0f},
    {0x5c, 0x15},
    {0x5d, 0x1c},
    {0x5e, 0x28},
    {0x5f, 0x36},
    {0x60, 0x45},
    {0x61, 0x51},
    {0x62, 0x6a},
    {0x63, 0x7d},
    {0x64, 0x8d},
    {0x65, 0x98},
    {0x66, 0xa2},
    {0x67, 0xb5},
    {0x68, 0xc3},
    {0x69, 0xcd},
    {0x6a, 0xd4},
    {0x6b, 0xdc},
    {0x6c, 0xe3},
    {0x6d, 0xf0},
    {0x6e, 0xf9},
    {0x6f, 0xff},
 
 
    {0xfe, 0x00},
    {0x70, 0x50},
 
 
    {0xfe, 0x00},
    {0x4f, 0x01},
    {0xfe, 0x01},
    {0x0c, 0x01},
    {0x0d, 0x00}, 
    {0x12, 0xa0},
    {0x13, 0x38},
    {0x1f, 0x40},
    {0x20, 0x40},
    {0x23, 0x0a},
    {0x26, 0x9a},
    {0x3e, 0x20},
    {0x3f, 0x2d},
    {0x40, 0x40},
    {0x41, 0x5b},
    {0x42, 0x82},
    {0x43, 0xb7},
    {0x04, 0x0a},
    {0x02, 0x79},
    {0x03, 0xc0},
 
   
    {0xfe, 0x01},
    {0xcc, 0x08},
    {0xcd, 0x08},
    {0xce, 0xa4},
    {0xcf, 0xec},
 
  
    {0xfe, 0x00},
    {0x81, 0xb8},
    {0x82, 0x04},
    {0x83, 0x10},
    {0x84, 0x01},
    {0x86, 0x50},
    {0x87, 0x18},
    {0x88, 0x10},
    {0x89, 0x70},
    {0x8a, 0x20},
    {0x8b, 0x10},
    {0x8c, 0x08},
    {0x8d, 0x0a},
 
 
    {0xfe, 0x00},
    {0x8f, 0xaa},
    {0x90, 0x1c},
    {0x91, 0x52},
    {0x92, 0x03},
    {0x93, 0x03},
    {0x94, 0x08},
    {0x95, 0x6a},
    {0x97, 0x00},
    {0x98, 0x00},
 
  
    {0xfe, 0x00},
    {0x9a, 0x30},
    {0x9b, 0x50},
    {0xa1, 0x30},
    {0xa2, 0x66},
    {0xa4, 0x28},
    {0xa5, 0x30},
    {0xaa, 0x28},
    {0xac, 0x32},
 
   
    {0xfe, 0x00},
    {0xd1, 0x3f},
    {0xd2, 0x3f},
    {0xd3, 0x38},
    {0xd6, 0xf4},
    {0xd7, 0x1d},
    {0xdd, 0x72},
    {0xde, 0x84},
 
    {0xfe, 0x00},
    {0x05, 0x01},
    {0x06, 0xad},
    {0x07, 0x00},
    {0x08, 0x10},
 
    {0xfe, 0x01},
    {0x25, 0x00},
    {0x26, 0x4d},
 
    {0x27, 0x01},
    {0x28, 0xce}, 
    {0x29, 0x01},
    {0x2a, 0xce}, 
    {0x2b, 0x01},
    {0x2c, 0xce}, 
    {0x2d, 0x01},
    {0x2e, 0xce}, 
    {0x2f, 0x01},
    {0x30, 0xce}, 
    {0x31, 0x01},
    {0x32, 0xce}, 
    {0x33, 0x01},
    {0x34, 0xce}, 
    {0x3c, 0x10}, 
    {0xfe, 0x00},
    {0x44, 0x03},
 }
 
 local gc0310_reg_table = {
    {0xfe, 0xf0},
    {0xfe, 0xf0},
    {0xfe, 0x00},
    {0xfc, 0x16}, 
    {0xfc, 0x16}, 
    {0xf2, 0x07}, 
    {0xf3, 0x83}, 
    {0xf5, 0x07}, 
    {0xf7, 0x88}, 
    {0xf8, 0x00}, 
    {0xf9, 0x4f}, 
    {0xfa, 0x11}, 
    {0xfc, 0xce},
    {0xfd, 0x00},

    {0x00, 0x2f},
    {0x01, 0x0f},
    {0x02, 0x04},
    {0x03, 0x02},
    {0x04, 0x12},
    {0x09, 0x00},
    {0x0a, 0x00},
    {0x0b, 0x00},
    {0x0c, 0x04},
    {0x0d, 0x01},
    {0x0e, 0xe8},
    {0x0f, 0x02},
    {0x10, 0x88},
    {0x16, 0x00},
    {0x17, 0x14},
    {0x18, 0x1a},
    {0x19, 0x14},
    {0x1b, 0x48},
    {0x1c, 0x6c},
    {0x1e, 0x6b},
    {0x1f, 0x28},
    {0x20, 0x8b},
    {0x21, 0x49},
    {0x22, 0xd0},
    {0x23, 0x04},
    {0x24, 0xff},
    {0x34, 0x20},

    {0x26, 0x23}, 
    {0x28, 0xff}, 
    {0x29, 0x00}, 
    {0x32, 0x04},
    {0x33, 0x10}, 
    {0x37, 0x20}, 
    {0x38, 0x10},
    {0x47, 0x80}, 
    {0x4e, 0x66}, 
    {0xa8, 0x02}, 
    {0xa9, 0x80},

    {0x40, 0xff},
    {0x41, 0x21}, 
    {0x42, 0xcf}, 
    {0x44, 0x00},
    {0x45, 0xa0},
    {0x46, 0x02}, 
    {0x4a, 0x11},
    {0x4b, 0x01},
    {0x4c, 0x20}, 
    {0x4d, 0x05}, 
    {0x4f, 0x01},
    {0x50, 0x01}, 
    {0x55, 0x01}, 
    {0x56, 0xe0},
    {0x57, 0x02}, 
    {0x58, 0x80},

    {0x70, 0x70},
    {0x5a, 0x84},
    {0x5b, 0xc9},
    {0x5c, 0xed},
    {0x77, 0x74},
    {0x78, 0x40},
    {0x79, 0x5f},

    {0x82, 0x14},
    {0x83, 0x0b},
    {0x89, 0xf0},

    {0x8f, 0xaa},
    {0x90, 0x8c},
    {0x91, 0x90},
    {0x92, 0x03},
    {0x93, 0x03},
    {0x94, 0x05},
    {0x95, 0x65},
    {0x96, 0xf0},

    {0xfe, 0x00},
    {0x9a, 0x20},
    {0x9b, 0x80},
    {0x9c, 0x40},
    {0x9d, 0x80},
    {0xa1, 0x30},
    {0xa2, 0x32},
    {0xa4, 0x30}, 
    {0xa5, 0x30}, 
    {0xaa, 0x10}, 
    {0xac, 0x22},

    {0xfe, 0x00},
    {0xbf, 0x08},
    {0xc0, 0x16},
    {0xc1, 0x28},
    {0xc2, 0x41},
    {0xc3, 0x5a},
    {0xc4, 0x6c},
    {0xc5, 0x7a},
    {0xc6, 0x96},
    {0xc7, 0xac},
    {0xc8, 0xbc},
    {0xc9, 0xc9},
    {0xca, 0xd3},
    {0xcb, 0xdd},
    {0xcc, 0xe5},
    {0xcd, 0xf1},
    {0xce, 0xfa},
    {0xcf, 0xff},

    {0xd0, 0x40},
    {0xd1, 0x34},
    {0xd2, 0x34},
    {0xd3, 0x40},
    {0xd6, 0xf2},
    {0xd7, 0x1b},
    {0xd8, 0x18},
    {0xdd, 0x03},

    {0xfe, 0x01},
    {0x05, 0x30},
    {0x06, 0x75},
    {0x07, 0x40},
    {0x08, 0xb0},
    {0x0a, 0xc5},
    {0x0b, 0x11},
    {0x0c, 0x00},
    {0x12, 0x52},
    {0x13, 0x38},
    {0x18, 0x95},
    {0x19, 0x96},
    {0x1f, 0x20},
    {0x20, 0xc0},
    {0x3e, 0x40},
    {0x3f, 0x57},
    {0x40, 0x7d},
    {0x03, 0x60},
    {0x44, 0x00},

    {0xfe, 0x01},
    {0x1c, 0x91},
    {0x21, 0x15},
    {0x50, 0x80},
    {0x56, 0x04},
    {0x59, 0x08},
    {0x5b, 0x02},
    {0x61, 0x8d},
    {0x62, 0xa7},
    {0x63, 0xd0},
    {0x65, 0x06},
    {0x66, 0x06},
    {0x67, 0x84},
    {0x69, 0x08},
    {0x6a, 0x25},
    {0x6b, 0x01},
    {0x6c, 0x00},
    {0x6d, 0x02},
    {0x6e, 0xf0},
    {0x6f, 0x80},
    {0x76, 0x80},
    {0x78, 0xaf},
    {0x79, 0x75},
    {0x7a, 0x40},
    {0x7b, 0x50},
    {0x7c, 0x0c},
    {0x90, 0xc9}, 
    {0x91, 0xbe},
    {0x92, 0xe2},
    {0x93, 0xc9},
    {0x95, 0x1b},
    {0x96, 0xe2},
    {0x97, 0x49},
    {0x98, 0x1b},
    {0x9a, 0x49},
    {0x9b, 0x1b},
    {0x9c, 0xc3},
    {0x9d, 0x49},
    {0x9f, 0xc7},
    {0xa0, 0xc8},
    {0xa1, 0x00},
    {0xa2, 0x00},
    {0x86, 0x00},
    {0x87, 0x00},
    {0x88, 0x00},
    {0x89, 0x00},
    {0xa4, 0xb9},
    {0xa5, 0xa0},
    {0xa6, 0xba},
    {0xa7, 0x92},
    {0xa9, 0xba},
    {0xaa, 0x80},
    {0xab, 0x9d},
    {0xac, 0x7f},
    {0xae, 0xbb},
    {0xaf, 0x9d},
    {0xb0, 0xc8},
    {0xb1, 0x97},
    {0xb3, 0xb7},
    {0xb4, 0x7f},
    {0xb5, 0x00},
    {0xb6, 0x00},
    {0x8b, 0x00},
    {0x8c, 0x00},
    {0x8d, 0x00},
    {0x8e, 0x00},
    {0x94, 0x55},
    {0x99, 0xa6},
    {0x9e, 0xaa},
    {0xa3, 0x0a},
    {0x8a, 0x00},
    {0xa8, 0x55},
    {0xad, 0x55},
    {0xb2, 0x55},
    {0xb7, 0x05},
    {0x8f, 0x00},
    {0xb8, 0xcb},
    {0xb9, 0x9b},

    {0xfe, 0x01},
    {0xd0, 0x38}, 
    {0xd1, 0x00},
    {0xd2, 0x02},
    {0xd3, 0x04},
    {0xd4, 0x38},
    {0xd5, 0x12},
    {0xd6, 0x30},
    {0xd7, 0x00},
    {0xd8, 0x0a},
    {0xd9, 0x16},
    {0xda, 0x39},
    {0xdb, 0xf8},

    {0xfe, 0x01},
    {0xc1, 0x3c},
    {0xc2, 0x50},
    {0xc3, 0x00},
    {0xc4, 0x40},
    {0xc5, 0x30},
    {0xc6, 0x30},
    {0xc7, 0x10},
    {0xc8, 0x00},
    {0xc9, 0x00},
    {0xdc, 0x20},
    {0xdd, 0x10},
    {0xdf, 0x00},
    {0xde, 0x00},

    {0x01, 0x10},
    {0x0b, 0x31}, 
    {0x0e, 0x50},
    {0x0f, 0x0f},
    {0x10, 0x6e},
    {0x12, 0xa0},
    {0x15, 0x60},
    {0x16, 0x60},
    {0x17, 0xe0},

    {0xcc, 0x0c}, 
    {0xcd, 0x10},
    {0xce, 0xa0},
    {0xcf, 0xe6},


    {0x45, 0xf7},
    {0x46, 0xff}, 
    {0x47, 0x15},
    {0x48, 0x03}, 
    {0x4f, 0x60}, 

    {0xfe, 0x00},
    {0x05, 0x01},
    {0x06, 0x32}, 
    {0x07, 0x00},
    {0x08, 0x0c}, 
    {0xfe, 0x01},
    {0x25, 0x00}, 
    {0x26, 0x3c},
    {0x27, 0x01}, 
    {0x28, 0xdc},
    {0x29, 0x01}, 
    {0x2a, 0xe0},
    {0x2b, 0x01}, 
    {0x2c, 0xe0},
    {0x2d, 0x01}, 
    {0x2e, 0xe0},
    {0x3c, 0x20},

--SPI配置
{0xfe, 0x03},
{0x52, 0xa2},
{0x53, 0x24}, 
{0x54, 0x20},
{0x55, 0x00},
{0x59, 0x1f}, 
{0x5a, 0x00},
{0x5b, 0x80},
{0x5c, 0x02},
{0x5d, 0xe0},
{0x5e, 0x01},
{0x51, 0x03},
{0x64, 0x04},
{0xfe, 0x00},
{0x44, 0x02},
}
local id = nil
function airCamera.camera_init(sn)

    function bf30a2Init(cspiId,i2cId,speed,scanMode,onlyY)

    end
    if sn == "bf30a2"  then
        id = camera.init(cspiId,speed,0,0,1,0,0,onlyY,scanMode,240,320)
        for i=1,#bf30a2_reg_table do
            i2c.send(i2cId,0x6e,reg_table[i],1)
        end
        camera.start(id)
    elseif sn == "bf30a"  then
        id = camera.init(cspiId,speed,1,1,2,1,0x00010101,onlyY,scanMode,640,480)
        for i=1,#gc032a_reg_table do
            i2c.send(i2cId,0x21,reg_table[i],1)
        end
        camera.start(id)
    elseif sn == "gc0310"  then
        local id = camera.init(cspiId,speed,1,1,2,1,0x00010101,onlyY,scanMode,640,480)
        for i=1,#gc0310_reg_table do
            i2c.send(i2cId,0x21,reg_table[i],1)
        end
        camera.start(id)
    end
    return id
end

return airCamera